<?php
require_once(MODULESPATH . "core/b.object.class.php");
require_once(MODULESPATH . "finance/business/b.finance.inc.php");

/**
 * 财经系统业务层证券类。
 */
class BStock extends BObject implements IBStock{
    /**
     * 证券数据库访问对象。
     */
    private $dao = null;
    
    /*- IBStock 接口实现 START -*/
    /*- IInjectEnable 接口实现 START -*/
    /**
     * 设置属性值。
     */
    public function __set($prop, $val){
        $this->$prop = $val;
    }
    /*- IInjectEnable 接口实现 END -*/
    
    /**
     * 获取证券列表。
     * @param String $market 证券市场编码。
     * @param String $key 查询的关键字。
     * @return 证券列表。
     */
    public function getStocks($market = null, $key = ""){
        $result = array();
        $stocks = array();
        $cache_key = "global_stocks_$market";
        $stocks = $this->cache->get($cache_key);
        if($stocks == null){
            $stocks = $this->dao->getStocks($market);
            $this->cache->add($cache_key, $stocks);
        }
        if(strlen($key) > 0){
            $pattern = "/$key/i";    
            foreach($stocks as $key=>$stock){
                if((preg_match($pattern, $stock["symbol"]) > 0) ||
                    (preg_match($pattern, $stock["name"]) > 0) ||
                    (preg_match($pattern, $stock["pinyin"]) > 0)){
                    $result[$key] = $stock;
                }
            }
        }else{
            $result = $stocks;
        }
        return $result;
    }
    /*- IBStock 接口实现 END -*/
}
?>
